import java.util.Scanner;

/**
 * 题目描述
 * 输出一个词组中每个单词的首字母的大写组合。
 * 输入描述
 * 输入的第一行是一个整数n，表示一共有n组测试数据。（输入只有一个n，没有多组n的输入）
 * 接下来有n行，每组测试数据占一行，每行有一个词组，每个词组由一个或多个单词组成；每组的单词个数不超过10个，每个单词有一个或多个大写或小写字母组成；
 * 单词长度不超过10，由一个或多个空格分隔这些单词。
 * 输出描述
 * 请为每组测试数据输出规定的缩写，每组输出占一行。
 * 输入示例
 * 1
 * ad dfa     fgs
 * 输出示例
 * ADF
 * 提示信息
 * 注意：单词之间可能有多个空格
 */
public class Main11 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int n = scanner.nextInt();
            scanner.nextLine();
            for (int i = 0; i < n; i++) {
                // 获取原始字符串 去空格的 trim
                String line = scanner.nextLine().trim();
                // 字符数组接收
                char[] arr = line.toCharArray();
                // 接收转换后的 大写字母
                StringBuffer stringBuffer = new StringBuffer();
                int j = 0;
                while (j < arr.length){
                    if (arr[j] >= 'a' && arr[j] <= 'z'){
                        arr[j] = Character.toUpperCase(arr[j]);
                    }
                    stringBuffer.append(arr[j]);
                    //然后继续遍历，如果当前字符不是空字符串' '，说明当前单词还没有遍历完，j++进行下一个字符的判断，直到当前单词的字符走完，然后进入到空字符串的处理，直到空字符串处理完毕，重新走while循环。
                    // 上方转换首字母以后，跳过非首字母的
                    while (j < arr.length && arr[j] != ' '){
                        j++;
                    }
                    // 跳过空格
                    while (j < arr.length && arr[j] == ' '){
                        j++;
                    }
                }
                System.out.println(stringBuffer.toString());
            }
        }
    }
}
/**
 * StringBuilder 也用于处理字符串，但为什么要使用StringBuilder而不是String?
 *
 * 这是因为如果你使用 String 进行字符串拼接，每次拼接都会创建一个新的字符串对象，这会产生大量的临时对象，会影响性能。
 * 而使用 StringBuilder 可以避免这个问题
 * StringBuilder 是可变的，它允许你在不创建新的字符串对象的情况下进行字符串的连接和修改，不会创建大量的临时对象，因此更高效。
 */
